package utils

import (
	"golang.org/x/exp/constraints"
)

// Min 获取最小值;
// 注意: 必须至少有一个值, 否则 panic, 似乎也没有比较好的逻辑判断方法: 在为空时如果返回缺省值容易出逻辑错误.
func Min[T constraints.Ordered](values ...T) T {
	ret := values[0]
	for _, val := range values {
		if val < ret {
			ret = val
		}
	}
	return ret
}

// Max 获取最大值 , 已经有预定义的 slices.Max() 函数了
func Max[T constraints.Ordered](values ...T) T {
	ret := values[0] // 注意: 必须至少有一个值, 否则 panic
	for _, val := range values {
		if val > ret {
			ret = val
		}
	}
	return ret
}
